import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
 * Write a description of class CPU here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class CPU  extends Pescador
{
    /**
     * Act - do whatever the CPU wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    Mundo mundo=(Mundo)getWorld();
    GreenfootImage mira;
     
    /**
     * Metodo que escala la imagen de la mira del CPU
     */
    public CPU()
    {
      mira=getImage();
      mira.scale(25,25);
    }
    /**
     * Este metodo manda llamar al metodo busca
     */
    public void act() 
    {
        busca();// Add your action code here.
    }    
    /**
     * Este metodo manda llamar a otros mas, que en su conjunto sirven para que el CPU simule que persigue a los peces y cuando 
     * los encuentra les dispara, sumando puntaje, y ademas eliminando a los peces del escenario
     */
    private void busca()
    {
        List peces=getWorld().getObjects(Pez.class);
        Pez u=null;
      
        if(!peces.isEmpty())
        {
           u=(Pez)(peces.get(0));
         
           if(u.getY()<getY())
           {
               a();
           }
          
           if(u.getY()>getY())
           {
              b();
           }   
         
           if(u.getX()<getX())
           {
              izq();
           }
          
           if(u.getX()>getX())
           {
              der();
           }
          Pez encontrado = (Pez) getOneObjectAtOffset(getImage().getWidth()/1000 , getImage().getHeight()/1000, Pez.class);
        
          if(encontrado!=null&&Greenfoot.getRandomNumber(50) == 0)
          {
              Greenfoot.playSound("disparo.wav");
              getWorld().removeObject(encontrado);
              ((Puntaje)(getWorld().getObjects(Puntaje.class).get(0))).add(100);
          }
              
        }
    }
    /**
     * Mueve el cursor hacia arriba mientras no se exceda del limite de la pantalla
     */
    private void a()
    {
       if(getY()>4)
       {
           setLocation(getX(), getY()-4); 
       }
    }
         
    /**
     * Mueve el cursor hacia abajo mientras no se exceda del limite de la pantalla
     */
    private void b()
    {
       if(getY()<395)
       {
           setLocation(getX(),getY()+4);
       }
    }
         
    /**
     * Mueve el cursor hacia la derecha mientras no se exceda del limite de la pantalla
     */
        private void der()
    {
       if(getX()<595)
       {
           setLocation(getX()+4, getY()); 
       }
    }
         
    /**
     * Mueve el cursor hacia la izquierda mientras no se exceda del limite de la pantalla
     */
    private void izq()
    {
       if(getX()>5)
       {
           setLocation(getX()-4,getY());
       }
    }
         
}
